#ifndef _OGITOR_SCENE_H_
#define _OGITOR_SCENE_H_

#include <Terrain/OgreTerrain.h>
#include <Terrain/OgreTerrainGroup.h>
#include <OgreImage.h>
#include <OISEvents.h>
#include <OISInputManager.h>
#include <OISKeyboard.h>
#include <OISMouse.h>
#include <SdkCameraMan.h>

class DotSceneLoader;

namespace Forests
{
    class PagedGeometry;
    class GrassLoader;
    class GrassLayer;
}

class OgitorScene
{
private:
    std::vector<Ogre::String> mCamNames;
    Ogre::TerrainGroup* mTerrainGroup;
	Ogre::SceneManager* mSceneMgr ;
	Ogre::RenderWindow* mWindow ;
	Ogre::Camera* mCamera ;
	OgreBites::SdkCameraMan* mCameraMan ;
    DotSceneLoader* mLoader;
    bool mTerrainImported;
    Ogre::String mSceneFile;
    Ogre::String mHelpInfo;
    bool mFly;
    Ogre::Real mFallVelocity;

    Forests::PagedGeometry* mPGHandle;                         /** Handle to Forests::PagedGeometry object */
    Forests::GrassLoader* mGrassLoaderHandle;                /** Handle to Forests::GrassLoader object */
    Forests::GrassLayer* mPGLayers[4];
    float* mPGLayerData[4];
    Ogre::Image mPGDensityMap;
    Ogre::Rect mPGDirtyRect;

private:
	void setupResources () ;
public:
	void init (Ogre::SceneManager*, Ogre::RenderWindow*, OgreBites::SdkCameraMan*) ;
	void load (const char*) ;

	float getHeight (float, float) ;

} ;

#endif